import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
  const env = loadEnv(mode, process.cwd(), '')
  
  console.log('当前环境:', mode)
  console.log('API代理目标:', env.VITE_API_PROXY_TARGET || '未设置')
  
  const config = {
    plugins: [vue()],
    server: {
      cors: true, // 启用CORS
      host: '0.0.0.0', // 允许外部访问
      proxy: {}
    },
    // 构建配置
    build: {
      // 生产环境构建目标目录
      outDir: 'dist',
      // 资源路径前缀，适应不同的部署基础路径
      base: './',
      // 静态资源处理
      assetsDir: 'static',
      // 生成 sourcemap
      sourcemap: false
    }
  }
  
  // 仅在开发模式下添加代理配置
  if (mode === 'development' && env.VITE_API_PROXY_TARGET) {
    config.server.proxy = {
      '/api': {
        target: env.VITE_API_PROXY_TARGET,
        changeOrigin: true,
        rewrite: (path) => path,
        secure: false,
        configure: (proxy, options) => {
          proxy.on('error', (err, req, res) => {
            console.error('代理错误:', err);
          });
          proxy.on('proxyReq', (proxyReq, req, res) => {
            console.log('发送请求到:', proxyReq.path);
          });
          proxy.on('proxyRes', (proxyRes, req, res) => {
            console.log('收到响应:', proxyRes.statusCode);
          });
        }
      }
    }
  }
  
  return config
})
